package socofwebget;

import java.util.ArrayList;
import java.util.Date;

public class Coleccao {

    private ArrayList<Ficheiros> lista = new ArrayList<Ficheiros>();

    public Coleccao() {
    }
//Devolve AL com todos os FX existentes na BD do dominio
    public ArrayList<Ficheiros> listaTodosFXDominio(String dominio) {
        ArrayList<Ficheiros> listaCompleta = new ArrayList<Ficheiros> ();
        
        DBAccess bd=new DBAccess();
        
        listaCompleta = bd.getByDomain(dominio);

//DEBUG
//        for (Ficheiros fx : listaCompleta) {
//            System.err.println("A lista tem tamanho: "+listaCompleta.size());
//            System.err.println(fx.toString());       
//        }
        return listaCompleta;
    }
//Devolve AL com todos os FX incompletos do dominio
    public ArrayList<Ficheiros> listaIncompletos(String dominio) {
        ArrayList<Ficheiros> listaFXIncompletos = new ArrayList<Ficheiros>();
       
        DBAccess bd=new DBAccess();
        
        listaFXIncompletos = bd.getIncompleteByDomain(dominio);

//DEBUG
//        for (Ficheiros fx : listaFXIncompletos) {
//            System.err.println("A lista tem tamanho: "+listaFXIncompletos.size());
//            System.err.println(fx.toString());       
//        }
        return listaFXIncompletos;
    }
//Devolve AL com todos os FX ja descarregados do dominio    
    public ArrayList listaCompletos(String dominio) {
        ArrayList<Ficheiros> listaFXCompletos = new ArrayList<Ficheiros>();
       
        DBAccess bd=new DBAccess();
        
        listaFXCompletos = bd.getCompleteByDomain(dominio);

//DEBUG
//        for (Ficheiros fx : listaFXCompletos) {
//            System.err.println("A lista tem tamanho: "+listaFXCompletos.size());
//            System.err.println(fx.toString());       
//        }
        return listaFXCompletos;
    }
//Devolve AL com todos os FX ja descarregados do dominio    
    public ArrayList listaDominioPorEstado(String dominio, String estado) {
        ArrayList<Ficheiros> listaFXPorEstado = new ArrayList<Ficheiros>();
       
        DBAccess bd=new DBAccess();
        
        listaFXPorEstado = bd.getByDomainStatus(dominio, estado.toUpperCase());
//DEBUG        
//        for (Ficheiros fx : listaFXPorEstado) {
//            System.err.println("A lista tem tamanho: "+listaFXPorEstado.size());
//            System.err.println(fx.toString());       
//        }
        return listaFXPorEstado;
    }
//Inserir um ArrayList de Ficheiros
    public void inserirArrayFicheiros(ArrayList<Ficheiros> fx){
        lista=fx;
        DBAccess bd=new DBAccess();
        
        for (Ficheiros fxIterator : fx) {
            bd.writeData(fxIterator);
        }
    }
//Inserir um Ficheiros
    public int  writeData(Ficheiros fx){
        DBAccess bd=new DBAccess();
        
        return bd.writeData(fx);
    }
//Inserir um Ficheiro com argumentos separados
    public  int writeData(Integer id,String dominio, String ficheiro,String estado,
            String tamanhosite,String caminhosite,String caminholocal,
            String tipo,Integer niveis,Date actualizado) {
        Ficheiros fx = new Ficheiros(id,dominio.toLowerCase(),ficheiro,
                estado.toUpperCase(),tamanhosite,caminhosite,caminholocal,
                tipo.toUpperCase(),niveis,actualizado);

        return writeData(fx);
    }
//Informa se já existe aquele Ficheiros    
    public boolean sqlExisteId(Ficheiros fx){
        DBAccess bd=new DBAccess();
        
        return bd.sqlExisteId(fx);
    }
//Informa se já existe Ficheiros com id
    public boolean sqlExisteId(int id){
        DBAccess bd=new DBAccess();
        
        return bd.sqlExisteId(id);
    }            
// Devolve um unico ficheiro conforme o id
    public Ficheiros getFicheiro (int id){
        DBAccess bd=new DBAccess();
        
        return bd.getFicheiro(id);
    }

//Devolve csv com todos os ficheiros do AL local
    public String toString(String dominio) {
        String saida = "";
        for (Ficheiros fx : lista) {
            saida += fx.toString();
        }
        return saida;
    }
}
